Open Documents Event
To handle the Open Documents event, your application should open the
documents specified in the Apple event. The Open Documents event contains
a list of documents to open in its direct parameter. Your application extracts
this information and then opens the specified documents.
The following program shows a handler for the Open Documents event. The
handler illustrates how to open the documents referred to in the direct
parameter.
// A handler for the Open Documents event
// Assuming inclusion of
void DoError (OSErr myErr); {
long index, itemsInList;
// get the direct parameter--a descriptor list--and put
// it into docList
typeAEList, & docList);
if ( myErr)
DoError( myErr);
// check for missing required parameters
myErr = MyGotRequiredParams( theAppleEvent);
if ( myErr) {
// an error occurred: do the necessary error handling
return myErr;
}
// count the number of descriptor records in the list
// now get each descriptor record from the list, coerce
// the returned data to an FSSpec record, and open the
// associated file
for ( index=1; index<= itemsInList; index++) {
& returnedType, (Ptr)& myFSS,
sizeof( myFSS), & actualSize);
if ( myErr)
DoError( myErr);
myErr = MyOpenFile(& myFSS);
if ( myErr)
DoError( myErr);
}
}
The handler in this program first uses the AEGetParamDesc function to get the direct parameter (specified by the keyDirectObject keyword) out of the
descriptor list in the docList variable. The handler then checks to make sure that it has retrieved all of the required parameters by calling the
MyGotRequiredParams function. A listing of the
MyGotRequiredParams function can be found under
Once the handler has retrieved the descriptor list from the Apple event, it uses AECountItems to count the number of descriptors in the list. Using the returned number as an index, the handler can get the data of each
descriptor record in the list. This handler requests that the AEGetNthPtr function coerce the data in the descriptor record to a file system specification
record (FSSpec). The handler can then use the file system specification record as a parameter to its own routine for opening files.
After extracting the file system specification record (FSSpec) that describes the document to open, your application can use this record to open the file. For
example, in the program above, the code passes the file system specification
record to its routine for opening files, the MyOpenFile function.
The MyOpenFile function is designed so that it can be called both in response to the Open Documents event and to events generated by the user. For
example, when the user chooses Open from the File menu, the code that user choose a file; it then calls MyOpenFile, passing the file system
performs a requested action from code that interacts with the user, you can
easily adapt your application to handle Apple events that request the same
action.
Note that your handler should use the AEDisposeDesc function to dispose of the descriptor list when your handler no longer requires the data in it. Your handler should also return a result code.